#!/bin/bash

# 初始化总统计变量
total_success=0
total_error=0

# 定义测试列表
tests=("-np 2 ./build/mpi_send_recv" "-np 8 ./build/mpi_reduce" "-np 8 ./build/mpi_gather" "-np 8 ./build/mpi_scatter" "-np 8 ./build/mpi_alltoall")

# 循环运行每个测试
for test in "${tests[@]}"; do
    echo "=== 开始运行测试: $test ==="

    # 运行测试并捕获输出（保存到临时变量）
    output=$(mpirun $test 2>&1)  # 2>&1 确保错误输出也被捕获
    echo "测试输出:"
    echo "$output"
    echo "-------------------------"

    # 从输出中提取 success 和 error 的数量（支持类似 "success: 3" 或 "2 errors" 等格式）
    # 匹配 "success" 相关的数字（不区分大小写）
    success=$(echo "$output" | grep -oi 'Success' | wc -l)
    # 匹配 "error" 相关的数字（不区分大小写）
    error=$(echo "$output" | grep -oi 'Error' | wc -l)

    # 累加统计
    total_success=$((total_success + success))
    total_error=$((total_error + error))

    # 输出当前测试的统计
    echo "$test 统计: 成功=$success, 失败=$error"
    echo "========================="
done

# 输出总统计结果
echo -e "\n===== 所有测试汇总统计 ====="
echo "总成功数: $total_success"
echo "总失败数: $total_error"
echo "总用例数: $((total_success + total_error))"
echo "============================"
